1 REM** PROGRAM BY TIM BOLBACH / GRAPHICS BY RICH BOZMAN ** 2 POKE56835,128:POKE56834,254:POKE57091,255:POKE53281,11:POKE53280,0 3 RV$=CHR$(18): SP$=RV$+" " 4 CO=36:LI=24:GOSUB260:PRINT CHR$(147)CHR$(144) 7 FORT=1 TO 21 9 NEXT T 12 POKE2020,195 13 POKE2021,195 14 POKE2022,195 15 POKE2023,253 17 PRINT"[147]"SPC(9)"EPROM HANDLER MENU" 19 PRINT" 1 LIST EPROM ON SCREEN" 20 PRINT" 2 PROGRAM EPROM" 21 PRINT" 3 WRITE EPROM TO DISK" 22 PRINT" 4 VERIFY EPROM WITH DISK" 23 PRINT" 5 CHECK FOR ERASURE" 24 PRINT" 6 DIRECTORY" 25 PRINT" 7 LIST DISK FILE TO SCREEN" 26 PRINT"  LOGO [146] = COMMODORE KEY" 27 POKE198,0:WAIT198,1:GETA$ 28 A=VAL(A$):IFA<1ORA>7THEN27 29 ONAGOTO30,62,101,138,182,214,240 30 REM *** READ EPROM *** 31 C$="0123456789ABCDEF" 33 PRINT"[147]"SPC(8)"LIST EPROM ON SCREEN" 35 PRINT"SHIFT=PAUSE[146] SHIFT LOCK=HOLD[146] LOGO=MENU" 36 A=0:POKE56835,128:POKE57091,255:REM**** SET PORTS FOR READ ****** 37 POKE56834,254 38 AD=A 39 GOSUB 54 40 PRINT RV$;"$";A$;":[146] "; 41 FOR T=0 TO 7 42 AH=INT((AD+T)/256):AL=(AD+T)-(AH*256) 43 POKE56832,AL :POKE56833,AH 44 POKE 56834,8 45 D=PEEK(57089) 46 POKE56834,254 47 GOSUB 59 48 PRINT D$;" "; 49 NEXT T 50 PRINT 51 ONPEEK(653)GOTO51,2 52 A=A+8 53 GOTO 38 54 D1=INT(A/4096):X=A-(D1*4096) 55 D2=INT(X/256):X=X-(D2*256) 56 D3=INT(X/16):D4=X-(D3*16) 57 A$=MID$(C$,D1+1,1)+MID$(C$,D2+1,1)+MID$(C$,D3+1,1)+MID$(C$,D4+1,1) 58 RETURN 59 D1=INT(D/16):D2=D-(D1*16) 60 D$=MID$(C$,D1+1,1)+MID$(C$,D2+1,1) 61 RETURN 62 REM *** BURN EPROM *** 63 PRINT"[147]";:POKE56835,128:POKE56834,254:POKE57091,128 65 PRINT SPC(13)"BURN EPROM" 67 GOSUB 1000 75 X=((2^A)*1024)-1 76 INPUT"FILE NAME";N$ 77 OPEN8,8,8,N$+",P,R" 78 OPEN15,8,15 79 GET#15,A$,B$ 80 ER=VAL(A$+B$) 81 PRINT"";A$+B$; 82 GET#15,A$:PRINTA$;:IFA$=CHR$(13)THEN84 83 GOTO82 84 IFER>0THENCLOSE8:CLOSE15: FORT=1 TO 1000:NEXT T:GOTO2 85 PRINTSPC(7)"PRESS KEY WHEN READY":POKE198,0:WAIT198,1 86 GET#8,A$:GET#8,A$:REM ** GET RID OF FILE ADDRESS *** 87 POKE56834,255:FORT=1 TO 1000:NEXTT 88 PRINTSPC(12)"LOCATION:":PRINTSPC(13)"LOGO = ABORT" 89 FORC=0 TO X:LI=19:CO=21:GOSUB260: 90 PRINTLEFT$(SP$,7-LEN(STR$(C)))C 91 GET#8,D$:IFD$=""THEND$=CHR$(0) 92 D=ASC(D$) 93 AH=INT(C/256):AL=C-(AH*256) 94 POKE56832,AL:POKE56833,AH 95 POKE57089,D 96 POKE56834,5 97 POKE56834,255 98 IFPEEK(653)=2THENC=X 99 NEXT C 100 POKE56834,254:POKE57091,255:CLOSE8:CLOSE15:GOTO2 101 REM *** WRITE EPROM TO DISK *** 102 PRINT"[147]";:POKE56835,128:POKE56834,254:POKE57091,255 104 PRINT SPC(9)"WRITE EPROM TO DISK" 106 GOSUB 1000 114 X=((2^A)*1024)-1 115 INPUT"FILE NAME";N$ 116 OPEN8,8,8,N$+",P,W" 117 OPEN15,8,15 118 GET#15,A$,B$ 119 ER=VAL(A$+B$):PRINTA$;B$; 120 GET#15,A$:PRINTA$;:IFA$=CHR$(13)THEN122 121 GOTO120 122 IFER>0THENCLOSE8:CLOSE15: FORT=1 TO 1000:NEXT T:GOTO2 123 PRINTSPC(7)"PRESS KEY WHEN READY":POKE198,0:WAIT198,1 124 POKE56834,254:FORT=1 TO 400:NEXTT 125 PRINTSPC(12)"LOCATION:":PRINTSPC(13)"LOGO = ABORT" 126 PRINT#8,CHR$(0);:PRINT#8,CHR$(0); :REM ** PUT IN FAKE FILE ADDRESS ** 127 FORC=0 TO X:LI=18:CO=21:GOSUB260: 128 PRINTLEFT$(SP$,7-LEN(STR$(C)))C 129 AH=INT(C/256):AL=C-(AH*256) 130 POKE56832,AL:POKE56833,AH 131 POKE56834,8 132 D=PEEK(57089) 133 POKE56834,254 134 D$=CHR$(D):PRINT#8,D$; 135 IFPEEK(653)=2THENC=X 136 NEXTC 137 POKE56834,254:POKE57091,255:CLOSE8:CLOSE15:GOTO2 138 REM *** VERIFY EPROM WITH DISK *** 139 PRINT"[147]";:POKE56835,128:POKE56834,254:POKE57091,255 141 PRINT"[147]"SPC(7)"VERIFY EPROM WITH DISK" 143 GOSUB 1000 151 X=((2^A)*1024)-1 152 INPUT"FILE NAME";N$ 153 OPEN8,8,8,N$+",P,R" 154 OPEN15,8,15 155 GET#15,A$,B$ 156 ER=VAL(A$+B$):PRINTA$;B$; 157 GET#15,A$:PRINTA$;:IFA$=CHR$(13)THEN159 158 GOTO157 159 IFER>0THENCLOSE8:CLOSE15: FORT=1 TO 1000:NEXT T:GOTO2 160 PRINTSPC(7)"PRESS KEY WHEN READY":POKE198,0:WAIT198,1 161 POKE56834,254:FORT=1 TO 400:NEXTT 162 PRINTSPC(12)"LOCATION:":PRINTSPC(13)"LOGO = ABORT" 163 GET#8,A$:GET#8,A$:REM ** GET FAKE FILE ADDRESS OUT OF THE WAY* 164 FORC=0 TO X 165 LI=18:CO=21:GOSUB260: 166 PRINTLEFT$(SP$,7-LEN(STR$(C)))C 167 AH=INT(C/256):AL=C-(AH*256) 168 POKE56832,AL:POKE56833,AH 169 POKE56834,8 170 D=PEEK(57089):PRINT" "LEFT$(SP$,5-LEN(STR$(D))) 171 POKE56834,254 172 GET#8,A$:IFA$=""THENA$=CHR$(0) 173 A=ASC(A$):IFA<>D THEN 180 174 IFPEEK(653)=2THENC=X 175 NEXT C 176 POKE56834,254:POKE57091,255:CLOSE8:CLOSE15:GOTO2 177 PRINT"[147] EPROM PROGRAM VERIFIED [146]" 178 PRINTSPC(4)"PRESS ANY KEY TO CONTINUE":POKE198,0:WAIT198,1 179 CLOSE8:CLOSE15:GOTO2 180 PRINT"[147] !!! ERROR FOUND !!! "; 181 PRINTSPC(4)"THE ERROR IS AT LOCATION :[146]"C:GOTO178 182 REM *** CHECK FOR ERASURE *** 184 PRINT"[147]"SPC(13)"CHECK ERASURE" 186 A=0:POKE56835,128:POKE57091,255:REM* SET PORTS FOR READ * 187 POKE56834,254 188 GOSUB 1000 196 POKE56834,254 197 X=((2^A)*1024)-1 198 PRINTSPC(8)"PRESS KEY WHEN READY":POKE198,0:WAIT198,1 199 PRINTSPC(12)"LOCATION:":PRINTSPC(13)"LOGO = ABORT" 200 FORC=0 TO X 201 IF PEEK(653)=2 THENC=X:GOTO210 202 LI=15:CO=21:GOSUB260: 203 PRINTLEFT$(SP$,7-LEN(STR$(C)))C 204 AH=INT(C/256):AL=C-(AH*256) 205 POKE56832,AL:POKE56833,AH 206 POKE56834,8 207 D=PEEK(57089) 208 POKE56834,254 209 IF D<>255 THEN 212 210 NEXT C:IFD<>255THEN212 211 PRINTSPC(8)"EPROM ERASED":GOTO213 212 PRINTSPC(7)"EPROM IS NOT ERASED !!" 213 PRINTSPC(9)"PRESS KEY FOR MENU":POKE198,0:WAIT198,1:GOTO2 214 REM *** DIRECTORY *** 216 PRINT"[147]"SPC(12)"DISK DIRECTORY" 218 PRINT" SHIFT=PAUSE[146]"SPC(9)"LOGO=MENU[146]" 219 OPEN1,8,0,"$0" 220 GET#1,A$,B$ 221 GET#1,A$,B$ 222 GET#1,A$,B$ 223 C=0:U$="" 224 IF A$<>"" THEN C=ASC(A$+CHR$(0)) 225 IF B$<>"" THEN C=C+ASC(B$+CHR$(0))*256 226 PRINTRIGHT$(SP$,9-LEN(STR$(C)))C" "; 227 GET#1,B$:IF ST<>0 THEN 237 228 IF B$<>CHR$(34) THEN 227 229 GET#1,B$:IF B$<>CHR$(34)THENU$=U$+B$:B$="":GOTO229 230 GET#1,B$:IF B$=CHR$(32) THEN230 231 PRINTCHR$(34)U$RIGHT$(SP$,16-LEN(U$))CHR$(34)" ";:C$="" 232 C$=C$+B$:GET#1,B$:IF B$<>"" THEN232 233 PRINTLEFT$(C$,3) 234 IFPEEK(653)=1THEN234 235 IFPEEK(653)=2THENCLOSE1:GOTO2 236 IF ST=0 THEN 221 237 PRINT" BLOCKS FREE" 238 PRINTSPC(11)"PRESS KEY FOR MENU":POKE198,0:WAIT198,1 239 CLOSE1:GOTO 2 240 REM **** DISPLAY DISK FILE ****** 242 PRINT"[147]"SPC(9)"DISPLAY DISK FILE" 244 PRINT" SHIFT=PAUSE[146]"SPC(9)"LOGO=MENU" 245 H$="0123456789ABCDEF" 246 INPUT" FILE NAME[146]";N$ 247 OPEN8,8,8,N$+",P,R" 248 GET#8,A$:GET#8,A$ 249 FOR T= 0 TO 8191 250 FOR R= 0 TO 7 251 GET#8,A$:IFA$=""THENA$=CHR$(0) 252 D=ASC(A$) 253 Q=INT(D/16):W=D-(Q*16) 254 D$=MID$(H$,Q+1,1)+MID$(H$,W+1,1) 255 PRINTD$;" "; 256 NEXT R 257 IF PEEK (653)=2 THEN CLOSE8:GOTO2 258 IF PEEK (653)=1 THEN 258 259 PRINT:NEXT T 260 POKE211,CO:POKE214,LI:SYS58732:RETURN 270 : 1000 PRINT"SELECT EPROM SIZE" 1010 PRINT" 1 2K" 1020 PRINT" 2 4K" 1030 PRINT" 3 8K" 1040 PRINT" 4 16K" 1050 PRINT" 5 32K" 1060 POKE198,0:WAIT198,1 1070 GETA$:A=VAL(A$):IFA<1ORA>5THEN1060 1080 RETURN